Web hosting is quickly becoming a commodity. Companies are starting to expect advanced functionality and redundancy at a low price. In order to provide this, a hosting company must share resources among as many sites as possible.
There are basically two general ways of operating a web server. The first is to set up a dedicated or managed server. In this system each company's web site runs on one server. This system is more flexible since it permits custom software to be installed and running on the server in order to perform the functions required by that company's web site. However, this system is expensive to purchase and operate because it requires a separate server for each company web site, and separate maintenance to be performed on that server.
Shared Hosting is the other form by which web sites are hosted. With this type of hosting, many company web sites share one or more servers. This system is generally less flexible because different custom software necessary to run each web site often cannot be installed. This method does have the advantage of being inexpensive, since fewer servers are required and the server maintenance costs are shared.
There are two general approaches to handling Shared Hosting, namely clustered vs. Single server. The single server approach (wherein one single server hosts multiple web sites) is the least expensive approach; however, it is often the least reliable and scalable solution. There is no failure tolerance and scaling means adding more servers and possibly “migrating” web sites between servers. It is difficult to predict the load that a given group of sites will place on a server, so a single server solution is difficult to manage effectively.
In contrast to the single server method, clustering or load balancing a group of servers to server content for all of the sites is much better. Generally, with this approach, all website data is stored on a central file server and the actual serving of pages is handled by a group of machines, configured identically, which pull data from the file server. Some form of load balancing is used to distribute requests among all of the servers. This approach can lead to greater failure tolerance, because if one server stops working, the others take over the load. It is also easier to scale, since more servers can be added at any time.
Some technology does not work well in a clustering environment, since many applications are designed to work on one server only. Examples are ASP, ColdFusion, and JSP. One approach to solving this limitation is to limit customers to one of either the “UNIX” or “Windows” hosting environments (i.e. servers running either a UNIX-like operating system such as Linux or a Windows based operating system). It is common practice to have companies wishing to have their websites hosted to restrict which hosting environment they can have. Commonly, this is stated as “UNIX or Windows” hosting, although it is not limited to these two choices. It is to be understood that throughout this application, the word UNIX refers to any UNIX like operating system such as UNIX™, Linux™, FreeBSD and the like. The term Windows generally refers to the Windows™ family of operating systems and technology produced by Microsoft™.
Once the company has chosen which environment to host their web site, the domain is then hosted on a server (or cluster) which is running the operating system more suited to the type of scripts and applications that the company plans to use. However, once chosen, it can be difficult to switch to the other hosting operating system. This approach reduces a companies choice in technology that they use. If they want to use technologies more suited to a different server setup, they need to purchase another account and run a portion of their site from that account. This is generally more expensive and difficult to maintain.
Web hosting companies that currently offer Windows technologies fall into two classes. First, there are those that offer true Windows hosting, i.e. access to COM components, ASP, and other specialized applications that are parsed and handled only by Microsoft's Internet Information Service (IIS) Webserver. Customers using this technology are given a mutually exclusive choice between UNIX hosting or Windows Hosting. If a user chooses Windows hosting, UNIX features and security become unavailable. Similarly, if a user chooses UNIX hosting, they cannot use ASP, COM objects or other Windows technology.
The other class of hosting companies offer Windows services on UNIX platforms. There are a few products that emulate Windows services on UNIX, thereby providing a good blend of the two environments; however, there are major problems with this approach. First, access to COM objects is not supported, and ODBC connectivity to Windows DBMS systems like MS-SQL is difficult and prone to errors. In addition, advanced features of IIS such as Session management are not available. Finally, DataSource Names (DSNs) are also unavailable. Also, other applications, such as JSP generally require a dedicated server in order to provide security. It is possible to run a few applications (maybe up to a couple hundred) on one server, but it will not scale easily.